package com.itcast.demo_one.kotlin

fun main(args: Array<String>) {

    // 1. 创建对象
    val man = Person1("李思思", 181)
    man.show()

    val woman = Person2("张三", 18)
    woman.show()

    // Person2.init()
    // Person2.start()

}


// 1. 显式主构造函数 带constructor
class Person1 constructor(var name: String, var age: Int){
    // 实例化对象成功后一定会执行init代码块
    // 作用: 初始化对象, 对参数进行类型校验
    init {
        println("来了, 老弟")
        require(age > 0){ "年龄必须大于0" }
        require(name.isNotEmpty()){ "姓名不能为空" }
    }

    fun show(){
        println("name: $name, age: $age")
    }
}

// 2. 隐式主构造函数
class Person2(var name: String, var age: Int){
    // 实例化对象成功后一定会执行init代码块
    init {
        println("来了, 老哥")
    }
    fun show(){
        println("name: $name, age: $age")
    }
}